Cosense みたいなアプリが作りたい
ページを結びつけるテーブル設計
code:sql
CREATE TABLE pages (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
description TEXT NOT NULL,
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE tokens (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT UNIQUE NOT NULL,
last_used_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE page_tokens (
page_id INTEGER NOT NULL,
token_id INTEGER NOT NULL,
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (page_id, token_id),
FOREIGN KEY (page_id) REFERENCES pages(id) ON DELETE CASCADE,
FOREIGN KEY (token_id) REFERENCES tokens(id) ON DELETE CASCADE
);
困ったことが、入力が終わって、1秒経ったら保存というロジックにすると、死にtokenがたくさんできてしまう
解決策
参照カウント方式
どのくらい参照されているのかカウントする
定期実行で参照が0のものは削除する
カウントがどのくらい正確になるのか
トランザクション貼ればほぼ大丈夫?
最終使用日ベースの削除
tokenにlast_used_atを持って、一定期間使われていないものは削除する
だいぶ乱暴
tokenの保存の方法を変える
tokenだけ、自動保存にしない
記事を結びつける方法を別途考える